﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SeguroSoft.Model.Model;

namespace SeguroSoft.Models
{
    public class UsuarioRepositorio : SeguroSoft.Models.IUsuarioRepositorio
    {
        private SeguroSoftDBDataContext db = new SeguroSoftDBDataContext();

        //Obtener todos los usuarios
        public IQueryable<Usuario> getAll()
        {
            return db.Usuarios;
        }

        //Encontrar a un usuario especifico.
        public Usuario getUsuario(string nombreUsuario)
        {
            return db.Usuarios.SingleOrDefault(d => d.Usuario1.Equals(nombreUsuario));
        }

        //Busqueda de usuarios.
        
        //Por Nombre
        public IQueryable<Usuario> BusquedaPorNombre(string nombre)
        {
            return from usuario in db.Usuarios
                   where usuario.Nombre.Contains(nombre)
                   orderby usuario.Apellido
                   select usuario;


            /*List<Usuario> encontrados = new List<Usuario>();
            foreach (Usuario u in db.Usuarios)
            {
                if (u.Nombre.Contains(nombre))
                    encontrados.Add(u);
            }

            return encontrados;
        */}
        //Por correo
        public IQueryable<Usuario> BusquedaPorCorreo(string correo)
        {
            return from usuario in db.Usuarios
                   where usuario.Correo.Contains(correo)
                   orderby usuario.Apellido
                   select usuario;

            /*List<Usuario> encontrados = new List<Usuario>();
            foreach (Usuario u in db.Usuarios)
            {
                if (u.Correo.Contains(correo))
                    encontrados.Add(u);
            }

            return encontrados;*/
        }
        //Por dirrecion
        public IQueryable<Usuario> BusquedaPorDirecion(string direccion)
        {
            return from usuario in db.Usuarios
                   where usuario.Direccion.Contains(direccion)
                   orderby usuario.Apellido
                   select usuario;
            /*List<Usuario> encontrados = new List<Usuario>();
            foreach (Usuario u in db.Usuarios)
            {
                if (u.Direccion.Contains(direcion))
                    encontrados.Add(u);
            }

            return encontrados;*/
        }

        //Por apellido
        public IQueryable<Usuario> BusquedaPorApellido(string apellido)
        {
            return from usuario in db.Usuarios
                   where usuario.Apellido.Contains(apellido)
                   orderby usuario.Nombre
                   select usuario;
            /*List<Usuario> encontrados = new List<Usuario>();
            foreach (Usuario u in db.Usuarios)
            {
                if (u.Apellido.Contains(apellido))
                    encontrados.Add(u);
            }

            return encontrados;*/
        }

        //Agregar un usuario nuevo
        public void AgregarUsuario(Usuario usuarioNuevo)
        {
            db.Usuarios.InsertOnSubmit(usuarioNuevo);
        }
        
        //Eliminar un usuario
        public void EliminarUsuario(Usuario usuario)
        {
            db.Usuarios.DeleteOnSubmit(usuario);
        }

        public void CambiarClaveUsuario(string usuario,string claveNueva)
        {
            var a = db.Usuarios.SingleOrDefault(d => d.Usuario1.Equals(usuario));
            a.Clave = claveNueva;
        }

        public void  ModificarDireccion(string usuario,string direccion)
        {
            var a = db.Usuarios.SingleOrDefault(d => d.Usuario1.Equals(usuario));
            a.Direccion = direccion ;
        
        }

        public void ModificarMail(string usuario, string mail)
        {
            var a = db.Usuarios.SingleOrDefault(d => d.Usuario1.Equals(usuario));
            a.Correo = mail;

        }
        public void Save()
        {
            db.SubmitChanges();
        }



    }
}
